/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ifconnect.view.managedBean;

import ifconnect.model.dao.CursoDao;
import ifconnect.model.dao.DisciplinaDao;
import ifconnect.model.entity.Curso;
import ifconnect.model.entity.Disciplina;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Genemes
 */
@ManagedBean(name = "disciplinaMB")
@ViewScoped
public class DisciplinaMB implements Serializable {

    DisciplinaDao dao = new DisciplinaDao();
    CursoDao daoCurso = new CursoDao();
    private Disciplina disciplina = new Disciplina();
    private List<Disciplina> disciplinas = new ArrayList<Disciplina>();
    private Curso curso;
    private List<Curso> cursos = new ArrayList<Curso>();
    private Disciplina disciplinaSelecionada = new Disciplina();
    public DisciplinaMB() {
        try {
            this.listarDisciplinas();
        } catch (Exception ex) {
            Logger.getLogger(DisciplinaMB.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            this.listarCursos();
        } catch (Exception ex) {
            Logger.getLogger(DisciplinaMB.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    public Disciplina getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(Disciplina disciplina) {
        this.disciplina = disciplina;
    }

    public List<Disciplina> getDisciplinas() {
        return disciplinas;
    }

    public void setDisciplinas(List<Disciplina> disciplinas) {
        this.disciplinas = disciplinas;
    }

    public Disciplina getDisciplinaSelecionada() {
        return disciplinaSelecionada;
    }

    public void setDisciplinaSelecionada(Disciplina disciplinaSelecionada) {
        this.disciplinaSelecionada = disciplinaSelecionada;
    }
    
    

    public void addDisciplina() throws Exception {
        this.disciplina.setCurso(curso);
        String msg = this.dao.salvar(this.disciplina);

        FacesMessage message = new FacesMessage(msg);
        message.setSeverity(FacesMessage.SEVERITY_INFO);
        FacesContext.getCurrentInstance().addMessage(null, message);
        
        this.curso = null;
        this.disciplina = new Disciplina();
        listarDisciplinas();
    }

    public void listarDisciplinas() throws Exception {
        this.disciplinas = dao.listar();
    }

    public void listarCursos() throws Exception {
        this.cursos = daoCurso.listar();
    }

    public void excluir() throws Exception {

        if (this.disciplinaSelecionada != null) {
            String msg = this.dao.remover(this.disciplinaSelecionada);
            FacesMessage message = new FacesMessage(msg);
            message.setSeverity(FacesMessage.SEVERITY_INFO);
            FacesContext.getCurrentInstance().addMessage(null, message);
            
            this.listarDisciplinas();
        }
    }
    
    public void atualizaDisciplina() {
        if (this.disciplinaSelecionada != null) {
            this.disciplina = this.disciplinaSelecionada;
            this.curso = this.disciplinaSelecionada.getCurso();
        }
    }

}